/************************************************************************
                        UserInteractionUnit.h
this class is a part of the Interface unit of Intersil
UserInteractionUnit is responsible for communicating with user interface/gui
and passing its request along to the other Interface Systems.
it does not alter the replies from the DataContainer.


* inherits from Object for future extendability.
*/
#ifndef USERINTERACTIONUNIT_H
#define USERINTERACTIONUNIT_H
#include "..\Shered\Object.h"
#include <memory>
using namespace std;
//class UserInteractionUnit
class Interface;
class Reply;
class Request;
class AuthenticationManager;
class UserInteractionUnit : virtual public Object
{
public:
	//ctor/dtor
	UserInteractionUnit (Interface &t_ifc);//t_ifc is a reference to Interface holding 
	//DataVerificator,AuthenticationManager,InterfaceLogic.
	virtual ~UserInteractionUnit ();
	//userRequest processes a user request with the Interface Systems - 
	//it checks for valid input with DataVerificator
	//it checkes user permissions using AuthenticationManager
	//it sends the user request to the DataContainer using InterfaceLogic
	//return reply to the user
	//it does not alter the replies from the DataContainer.
	auto_ptr<Reply> userRequest (const Request &request);
protected:
private:
	UserInteractionUnit(const UserInteractionUnit &uiu);
	UserInteractionUnit &operator=(const UserInteractionUnit &rhs);

	Interface &m_ifc;//reference to Interface holding 
	//DataVerificator,AuthenticationManager,InterfaceLogic.
};

#endif // USERINTERACTIONUNIT_H
